/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
 var twoSum = function(nums, target) {
    //快慢指针
    // let pre = cur = 0;
    // while(cur<nums.length-1){
    //     while(pre<nums.length-1){
    //         pre++;
    //         if(nums[pre]+nums[cur] == target) return [cur,pre]
    //     }
    //     cur++
    //     pre = cur;
    // }

    //暴力
    // let length = nums.length
    // for(let i = 0;i<length-1;i++){
    //     for(let j = i+1;j<length;j++){
    //         if(nums[i]+nums[j]==target) return[i,j]
    //     }
    // }
    
    //哈希map 
    // let map = new Map()
    // //map key是nums[i],value 是i
    // for(let i = 0;i<nums.length;i++){
    //     if(map.has(target-nums[i])){ //前面的有一个和num[i]相加等于tar
    //         return [map.get(target-nums[i]),i]
    //     }
    //     map.set(nums[i],i)
    // }

    // 回溯？
    let path = []
    res = []
    const back = function(path,index){
        //出口
        if(path.length == 2){
            if(path[0].val+path[1].val==target){
                res = path.map((v)=>{
                return v.index
                })
            }
            
            return
        }
        for(let i = index;i<nums.length;i++){
            path.push({index:i,val:nums[i]})
            back(path,index+1)
            path.pop()
        }
    }

    back(path,0)
    return res;
};